package com.screen.screendisplay.service.impl.coal;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.screen.screendisplay.entity.coal.CoalOverviewItem;
import com.screen.screendisplay.mapper.coal.CoalOverviewItemMapper;
import com.screen.screendisplay.service.coal.CoalOverviewItemService;
import com.screen.screendisplay.vo.coal.CoalTopIndicatorsVO;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;

/**
 * <p>
 * 产业总览信息表 服务实现类
 * </p>
 *
 * @author xuesong
 * @since 2025-08-23
 */
@Service
public class CoalOverviewItemServiceImpl extends ServiceImpl<CoalOverviewItemMapper, CoalOverviewItem> implements CoalOverviewItemService {

    @Override
    public CoalTopIndicatorsVO getTopIndicators(Integer year) {
        // 如果未指定年份，使用当前年份
        if (year == null) {
            year = LocalDate.now().getYear();
        }
        
        // 查询指定年份的最新数据（按月份降序）
        LambdaQueryWrapper<CoalOverviewItem> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(CoalOverviewItem::getYear, year)
               .orderByDesc(CoalOverviewItem::getMonth)
               .last("LIMIT 1");
        
        CoalOverviewItem item = this.getOne(wrapper);
        
        // 初始化VO
        CoalTopIndicatorsVO vo = new CoalTopIndicatorsVO();
        
        if (item != null) {
            // 年核定产能：吨 -> 万吨
            if (item.getAnnualCapacity() != null) {
                vo.setAnnualCapacity(item.getAnnualCapacity()
                        .divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP));
            }
            
            // 煤炭剩余储量：吨 -> 亿吨
            if (item.getCoalReserves() != null) {
                vo.setCoalReserves(item.getCoalReserves()
                        .divide(new BigDecimal("100000000"), 2, RoundingMode.HALF_UP));
            }
            
            // 当前生产总量：吨 -> 万吨
            if (item.getCurrentProduction() != null) {
                vo.setCurrentProduction(item.getCurrentProduction()
                        .divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP));
            }
            
            // 当年剥离总量：立方米 -> 万立方米
            if (item.getAnnualStripping() != null) {
                vo.setAnnualStripping(item.getAnnualStripping()
                        .divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP));
            }
            
            // 当年销售总量：吨 -> 万吨
            if (item.getAnnualSales() != null) {
                vo.setAnnualSales(item.getAnnualSales()
                        .divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP));
            }
            
            // 销售总收入：万元 -> 亿元
            if (item.getTotalRevenue() != null) {
                vo.setTotalRevenue(item.getTotalRevenue()
                        .divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP));
            }
            
            // 销售总利润：万元 -> 亿元
            if (item.getTotalProfit() != null) {
                vo.setTotalProfit(item.getTotalProfit()
                        .divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP));
            }
            
            // 营业收入利润率：直接使用
            vo.setProfitMargin(item.getProfitMargin());
            
            // 人均利润：直接使用
            vo.setProfitPerCapita(item.getProfitPerCapita());
            
            // 所得负税率：直接使用
            vo.setTaxRate(item.getTaxRate());
        }
        
        return vo;
    }
}
